XZ Utils

Un article de Wikipédia, l'encyclopédie libre.
XZ Utils

Informations
Dernière version 5.4.6 ()[1]Voir et modifier les données sur Wikidata
Dépôt github.com/tukaani-project/xzVoir et modifier les données sur Wikidata
Écrit en CVoir et modifier les données sur Wikidata
Système d'exploitation MultiplateformeVoir et modifier les données sur Wikidata
Formats lus XZ, .lzma File Format (d) et LZIP compressed archive (d)Voir et modifier les données sur Wikidata
Formats écrits XZ et .lzma File Format (d)Voir et modifier les données sur Wikidata
Type Logiciel de compression de données
Logiciel du domaine public (en)
Command-line tool (d)
Compression de donnéesVoir et modifier les données sur Wikidata
Licence Licence publique générale limitée GNU version 2.1 ou ultérieure (d)Voir et modifier les données sur Wikidata
Site web tukaani.org/xzVoir et modifier les données sur Wikidata

XZ Utils (anciennement LZMA Utils) est un ensemble de logiciels libres de compression sans perte en ligne de commande, incluant les programmes lzma et xz, pour les systèmes d'exploitation de type Unix et, à partir de la version 5.0, Microsoft Windows. Pour la compression/décompression, l'algorithme LZMA est utilisé. XZ Utils a commencé comme un port Unix du LZMA-SDK d'Igor Pavlov, adapté aux environnements Unix.

Fonctionnalités[modifier | modifier le code]

Dans la plupart des cas, xz atteint des taux de compression plus élevés que ses concurrents gzip et bzip2. La vitesse de décompression est supérieure à celle de bzip2, mais inférieure à celle de gzip. La compression peut être beaucoup plus lente que gzip, et est plus lente que bzip2 pour des niveaux de compression élevés. XZ Utils est donc plus compétitif lorsqu'un fichier compressé sera utilisé plusieurs fois[2],[3].

XZ Utils se compose de deux composants principaux :

  • xz, un utilitaire de compression en ligne de commande, analogue à gzip
  • liblzma, une bibliothèque offrant une API similaire à zlib

Divers raccourcis de commandes existent, tels que lzma (pour xz --format=lzma), unxz (pour xz --decompress ; analogue à gunzip) et xzcat (pour unxz --stdout ; analogue à zcat).

XZ Utils peut compresser et décompresser les formats de fichiers xz et lzma, mais comme le format LZMA est désormais obsolète, XZ il utilise par défaut le format xz.

Usage[modifier | modifier le code]

Le comportement du logiciel ainsi que les propriétés du format de fichier ont été conçus pour fonctionner de manière similaire à ceux des outils de compression Unix populaires gzip et bzip2.

Tout comme gzip et bzip, xz et lzma ne peuvent compresser que des fichiers (ou flux) uniques en entrée. Ils ne peuvent pas regrouper plusieurs fichiers dans une seule archive – pour cela, on utilise d'abord un programme d'archivage, tel que tar.

Compresser une archive :

xz  mon_archive.tar  # résultat dans mon_archive.tar.xz

Décompresser l'archive :

unxz  mon_archive.tar.xz   # résultat dans mon_archive.tar

À partir de la version 1.22, l'implémentation GNU de tar prend en charge de manière transparente les archives compressées avec lzma et xz, en utilisant les commutateurs --xz ou -J pour la compression xz et --lzma pour la compression LZMA.

Créer une archive et la compresser :

tar -c --xz  -f mon_archive.tar.xz  /ce_repertoire  # résultat dans mon_archive.tar.xz

Décompresser l'archive et extraire son contenu :

tar -x --xz  -f mon_archive.tar.xz   # résultat dans /ce_repertoire

xz prend en charge la compression multi-thread avec l'indicateur -T depuis 2014 et la version 5.2.0[4].

Depuis la version 5.4.0, la décompression multi-threadée est également implémentée. Elle nécessite plusieurs blocs compressés, créés par l'interface de compression multi-thread.

Le format xz[modifier | modifier le code]

Le format xz améliore lzma en autorisant des filtres de prétraitement. Les filtres exacts utilisés sont similaires à ceux utilisés dans 7z, car les filtres de 7z sont disponibles dans le domaine public via le SDK LZMA.

Développement, licences et adoption[modifier | modifier le code]

Le développement de XZ Utils a eu lieu dans le cadre de la distribution finlandaise Tukaani, une dérivée de Slackware.

Tout le code source de xz et liblzma a été publié dans le domaine public. La distribution source comprend en outre des scripts facultatifs et un exemple de programme sous licence GPL.

Plus précisément, la liste complète des sources GPL distribuées avec le logiciel XZ Utils comprend :

  • une implémentation facultative d'une fonction commune de la libc, getopt (en) (GNU LGPL v2.1)
  • un script m4 pour la détection de pthread (GNU GPL v3)
  • certains scripts d'encapsulation (xzgrep, etc.) ( GNU GPL v2 )
  • l'exemple de programme scanlzma, qui n'est pas intégré au système de build

Les binaires des logiciels xz et liblzma résultants sont du domaine public, à moins que l'implémentation facultative LGPL getopt ne soit incorporée[5].

Les binaires sont disponibles pour FreeBSD, NetBSD, les systèmes Linux, Microsoft Windows et FreeDOS. Un certain nombre de distributions Linux, notamment Slackware, Ubuntu et Debian, utilisent xz pour compresser leurs paquets (mais plus Fedora ni Arch Linux). L'archive FTP GNU utilise également xz.

Attaque par porte dérobée[modifier | modifier le code]

Une grave attaque par porte dérobée, visant par rebond le serveur OpenSSH a été détectée fin mars 2024 par le développeur allemand Andres Freund. Selon de nombreux analystes de sécurité, elle constitue une attaque de la chaîne logistique de Linux d'une envergure encore inégalée.

Notes et références[modifier | modifier le code]

  1. Jia Tan (en), « [xz-devel] XZ Utils 5.4.6, 5.5.1alpha, and website changes », (consulté le )
  2. (en) Henry-Stocker, « How to squeeze the most out of Linux file compression », Network World, (consulté le )
  3. (en-US) « Gzip vs Bzip2 vs XZ Performance Comparison », RootUsers, (consulté le )
  4. XZ Utils Release Notes
  5. « In what cases is the output of a GPL program covered by the GPL too? », GNU.org (consulté le )

Liens externes[modifier | modifier le code]